home *** CD-ROM | disk | FTP | other *** search
/ Aminet 31 / Aminet 31 (1999)(Schatztruhe)[!][Jun 1999].iso / Opus5.5 / ARexx.lha / ARexx / FIDList.dopus5 < prev    next >
Text File  |  1996-05-03  |  3KB  |  115 lines

  1. /*
  2.   $VER: FIDList.dopus5 1.6 (15.3.96)
  3.   Written by Edmund Vermeulen (edmundv@grafix.xs4all.nl).
  4.  
  5.   ARexx script for Directory Opus 5.5 to list all selected files in the
  6.   source with their 'FILE_ID.DIZ' description.
  7.  
  8.   Function : ARexx      DOpus:ARexx/FIDList.dopus5 {Qp} "T:FIDList.txt"
  9. */
  10.  
  11. parse arg portname . '"' outfile '"'
  12.  
  13. if portname='' then  /* in case they forgot */
  14.    portname='DOPUS.1'
  15. address value portname
  16.  
  17. if outfile='' then
  18.    outfile='T:FIDList.txt'
  19.  
  20. options results
  21. options failat 21
  22.  
  23. if ~show('l','rexxsupport.library') then
  24.    call addlib('rexxsupport.library',0,-30,0)  /* for delete() */
  25.  
  26. lf='0a'x
  27.  
  28. lister query source
  29. if rc>0 then
  30.    exit
  31. parse var result handle .  /* only need first source */
  32.  
  33. lister set handle busy on
  34.  
  35. lister query handle path
  36. srcpath=result
  37.  
  38. lister query handle selfiles stem file.
  39.  
  40. lister set handle progress file.count 'Making File ID List...'
  41. lister set handle title 'Making File ID List...'
  42. lister refresh handle full
  43.  
  44. call open('output',outfile,'w')
  45. call writeln('output',"File ID List of '"srcpath"' on" date('n'))
  46. call writeln('output','')
  47.  
  48. if exists('T:FILE_ID.DIZ') then do
  49.    command wait protect name 'T:FILE_ID.DIZ' set 'RWED'
  50.    call delete('T:FILE_ID.DIZ')
  51.    end
  52.  
  53. do i=0 to file.count-1
  54.    lister query handle abort
  55.    if result then
  56.       signal quitit
  57.  
  58.    lister set handle progress name file.i
  59.    lister set handle progress count i+1
  60.    lister query handle entry file.i stem fileinfo.
  61.  
  62.    beginline=left(fileinfo.name,31-length(fileinfo.size))' 'fileinfo.size
  63.  
  64.    thisfile='"'srcpath||fileinfo.name'"'
  65.    ext=reverse(fileinfo.name)
  66.    parse var ext ext '.'
  67.    ext=upper(reverse(ext))
  68.  
  69.    if ext='LHA'|ext='LZH'|ext='RUN' then
  70.       address command 'LhA e -q -Qw -Qo' thisfile 'T: FILE_ID.DIZ'
  71.  
  72.    if ext='LZX' then
  73.       address command 'LZX >NIL: x' thisfile 'FILE_ID.DIZ T:'
  74.  
  75.    if ext='DMS' then
  76.       address command 'DMSDescript >NIL: x T:FILE_ID.DIZ' thisfile
  77.  
  78.    if ext='README' then do  /* Aminet description */
  79.       call open('readme',srcpath||fileinfo.name,'r')
  80.       desc=readln('readme')
  81.       close('readme')
  82.       parse var desc ':' desc
  83.       beginline=beginline strip(desc,'b')
  84.       end
  85.  
  86.    if open('fileid','T:FILE_ID.DIZ','r') then do
  87.       do while ~eof('fileid')
  88.          idline=compress(readln('fileid'),'0d1a'x)
  89.          if ~(idline==''&eof('fileid')) then do
  90.             call writeln('output',beginline idline)
  91.             beginline=copies(' ',32)
  92.             end
  93.          end
  94.       call close('fileid')
  95.       command wait protect name 'T:FILE_ID.DIZ' set 'RWED'
  96.       call delete('T:FILE_ID.DIZ')
  97.       end
  98.    else
  99.       call writeln('output',beginline)
  100.  
  101.    lister select handle '"'fileinfo.name'"' off  /* deselect file */
  102.    end
  103.  
  104.  
  105. quitit:
  106.  
  107.    lister set handle title      /* reset title text */
  108.    lister clear handle progress
  109.    lister refresh handle full
  110.    lister set handle busy off
  111.  
  112.    call close('output')
  113.    command protect name '"'outfile'"' clear 'E'
  114.    command read outfile         /* display generated File ID List */
  115.